 # Author:: Adrian Matteo, Daniel Quijada, Edduar Serrano.

 # Clase para la interaccion REST con otras redes sociales.
 # Contiene los metodos de acceso a la informacion de TripBook
 # para las demas aplicaciones.
class RestController < ApplicationController
	
	require 'uri'
    require 'xmlsimple'
    require 'open-uri'
	
	#REDES = []
	#REDES << {:num=>"1",:name =>"Travelernet",:url=>"http://192.168.20.52:8000/travelernet/rest/"}
	
	TRAVELERNET_URL = "http://192.168.20.44:8000/travelernet/rest/"
	TRAVELERNET_URL2 = "http://192.168.20.44:8000/travelernet/rest2/"
	
	
	
	# Metodo de acceso a los viajes de cierto usuario.
	# Se accede mediante la direccion: "../rest/{NOMBRE_DE_USUARIO}"
	# Si el usuario existe, se devuelve un XML con el siguiente
	# formato:
	# <trips>
	#	<trip>
	#		<created-at>...</created-at>
	#		<id>...</id>
	#		<tri-city>...</tri-city>
	#		<tri-country>...</tri-country>
	#		<tri-end-date>...</tri-end-date>
	#		<tri-lodging>...</tri-lodging>
	# 		<tri-shared>...</tri-shared>
	#		<tri-start-date>...</tri-start-date>
	#		<tri-status>...</tri-status>
	#		<updated-at>...</updated-at>
	#		<user-id>...</user-id>
	#	</trip>
	#	...
	# <trips>
	def tripsByUser
		@trips = Trip.find(:all,:joins => [:user_trip,:user] ,:conditions => ["login =? and tri_shared = 1",params[:login]]);
		respond_to do |format|
			format.xml {render :xml => @trips}
		end
	end
	
	# Metodo de acceso a los itinerarios de cierto viaje.
	# Se accede mediante la direccion: "../rest/{NOMBRE_DE_USUARIO}/{ID_DEL_VIAJE}"
	# Si el usuario existe y el viaje tambien, se devuelve un XML con el siguiente
	# formato:
	#<itineraries type="array">-
	#	<itinerary>
	#		<created-at type="datetime">...</created-at>
	#		<id type="integer">...</id>
	#		<iti-description>...</iti-description>
	#		<iti-end-date type="datetime">...</iti-end-date>
	#		<iti-image-url>...</iti-image-url>
	#		<iti-latitude>...</iti-latitude>
	#		<iti-location>...</iti-location>
	#		<iti-longitude>...</iti-longitude>
	#		<iti-start-date type="datetime">...</iti-start-date>
	#		<iti-status type="integer">...</iti-status>
	#		<iti-votes type="integer">...</iti-votes>
	#		<trip-id type="integer">...</trip-id>
	#		<updated-at type="datetime">...</updated-at>
	#		<user-id type="integer">...</user-id>
	#	</itinerary>
	#	...
	#</itineraries>

	def itinerariesByTrip
		@itineraries = Itinerary.find(:all,:conditions => ["trip_id =?",params[:id]])
		respond_to do |format|
			format.xml {render :xml => @itineraries}
		end
	end
	
	def prueba
		@info = []
		user = "np"
		results = ''
		url = TRAVELERNET_URL+user
		open(url,"Accept" => "text/xml") {
		  |s| results = XmlSimple::xml_in(s.read, 'force_array' => false)
		}
		p results
		results['object'].each{	  
			|p|	@info << ["#{p['field']}"]
		}
	end
	
	def tripsTraveler
		@title = "Tus Viajes en Travelernet"
		results = ''
		url = TRAVELERNET_URL+current_user.login
		open(url,"Accept" => "text/xml") {
		  |s| results = XmlSimple::xml_in(s.read, 'force_array' => false)
		}
		p results
		@result = results
	end
	
	def itinerariesTraveler
		@title = "Itinerarios"
		results = ''
		url = TRAVELERNET_URL2+current_user.login+"/"+params[:id]
		aux = open(url,"Accept" => "text/xml") 
		config = XmlSimple.xml_in(aux)
		@result2 = config
	end
	
end
